import pymysql


# 定义类 - 数据库 工具类
class DBTools(object):
    # 创建连接 - 工具方法 - 静态 私有方法
    @staticmethod
    def __create_conn():
        # 连接数据库 信息，返回 成功与数据库建立好的 连接
        conn = pymysql.connect(host="211.103.136.244", port=7061,
                               user="student", password="iHRM_student_2022",
                               database="ihrm", charset="utf8")
        return conn

    # 执行查询sql查一条 - 工具方法
    @staticmethod
    def query_one(sql):
        conn = None
        cursor = None
        result = None
        try:
            # 获取连接
            conn = DBTools.__create_conn()
            # 创建游标
            cursor = conn.cursor()
            # 查一条，获取、返回结果
            cursor.execute(sql)
            # 保存查询结果
            result = cursor.fetchone()
        except Exception as err:
            print("查询 sql 执行出现异常：", err)
        finally:
            # 关闭游标
            cursor.close()
            # 关闭连接
            conn.close()
            # 返回查询结果
            return result

    # def query_many(self, start, n):
    # 获取连接
    # 创建游标
    # 查N条，获取、返回结果  fetcthmany(n)
    # 关闭游标
    # 关闭连接

    # 执行 增删改 sql  --- 工具方法
    @staticmethod
    def iud(sql):
        conn = None
        cursor = None
        try:
            # 获取连接
            conn = DBTools.__create_conn()
            # 创建游标
            cursor = conn.cursor()
            # 执行一条insert、update、delete 的 sql语句
            ret = cursor.execute(sql)
            # 执行成功，提交事务
            conn.commit()
            print("增删改执行结束，Affected rows：", ret)
        except Exception as err:
            # 执行失败，回滚事务
            conn.rollback()
            print("增删改 sql 执行出现异常：", err)
        finally:
            # 关闭游标
            cursor.close()
            # 关闭连接
            conn.close()


# main 回车
if __name__ == '__main__':
    # 通常，工具方法，可以定义为 静态方法，调用方便
    res = DBTools.query_one("select * from bs_user where mobile='17100236547';")
    print("查询结果：", res)

    # 测试 增删改 工具方法
    DBTools.iud("delete from bs_user where mobile='17100236547';")
